package leetcode_周赛._2022._202201._16;

/**
 * @author yzh
 * @version 1.0
 * @date 2022/1/16 11:16
 * 得到目标值的最少行动次数
 * 算法：数学 + 贪心
 */
public class _5194 {
    public static void main(String[] args) {
        System.out.println(new _5194().minMoves(19, 2));
    }

    public int minMoves(int target, int maxDoubles) {
        int ans = 0;
        while (target != 1 && maxDoubles > 0) {
            int tmp = target / 2;
            if (target % 2 == 0) ans += 1;
            else ans += 2;
            target = tmp;
            --maxDoubles;
        }
        return ans + target - 1;
    }

}
